#include "raylib.h"

//------------------------------------------------------------------------------------
// Program main entry point
// 程序主入口点
// 这是程序执行的起始位置，所有C++程序都从main函数开始运行。
//------------------------------------------------------------------------------------
int main(void)
{
    // Initialization
    // 初始化
    //--------------------------------------------------------------------------------------
    // 定义窗口的宽度和高度，单位为像素
    const int screenWidth = 800;
    const int screenHeight = 450;

    // 初始化窗口，设置窗口大小和标题
    // InitWindow函数用于创建一个窗口，第一个参数是宽度，第二个参数是高度，第三个参数是窗口标题
    InitWindow(screenWidth, screenHeight, "raylib [core] example - basic window");

    // 设置目标帧率为60帧每秒
    // 这意味着程序每秒会尝试刷新60次，保证动画流畅
    SetTargetFPS(60);               // Set our game to run at 60 frames-per-second
                                    // 设置游戏以60帧每秒运行
    //--------------------------------------------------------------------------------------

    // Main game loop
    // 主游戏循环
    // 这是游戏的核心循环，只有当窗口没有被关闭时才会一直执行
    // WindowShouldClose()函数会检测用户是否点击了关闭按钮或按下了ESC键
    while (!WindowShouldClose())    // Detect window close button or ESC key
                                   // 检测窗口关闭按钮或ESC键
    {
        // Update
        // 更新
        //----------------------------------------------------------------------------------
        // TODO: Update your variables here
        // 待办：在这里更新你的变量
        // 这一部分用于处理游戏逻辑、变量更新、输入检测等
        // 目前没有需要更新的内容，所以这里是空的
        //----------------------------------------------------------------------------------

        // Draw
        // 绘制
        //----------------------------------------------------------------------------------
        // BeginDrawing()和EndDrawing()之间的代码用于绘制内容到窗口
        // BeginDrawing()表示开始绘制一帧
        BeginDrawing();

            // 清空背景为白色
            // ClearBackground函数会用指定颜色填充整个窗口
            ClearBackground(RAYWHITE);

            // 在窗口上绘制一行文本
            // DrawText函数用于在指定位置绘制文字
            // 第一个参数是字符串内容，第二和第三个参数是x和y坐标，第四个参数是字体大小，第五个参数是字体颜色
            DrawText("Congrats! You created your first window!", 190, 200, 20, LIGHTGRAY);

        // EndDrawing()表示本帧绘制结束，内容会显示到窗口上
        EndDrawing();
        //----------------------------------------------------------------------------------
    }

    // De-Initialization
    // 反初始化
    //--------------------------------------------------------------------------------------
    // 关闭窗口并释放相关资源
    // CloseWindow函数会销毁窗口和OpenGL上下文，程序结束前必须调用
    CloseWindow();        // Close window and OpenGL context
                         // 关闭窗口和OpenGL上下文
    //--------------------------------------------------------------------------------------

    // 返回0表示程序正常结束
    return 0;
}